एसक्यूएल इन्सर्ट इनटू सेलेक्ट स्टेटमेंट
INSERT INTO SELECT स्टेटमेंट एक टेबल से डेटा कॉपी करता है और उसे दूसरी टेबल में डालता है।
INSERT INTO SELECT कथन के लिए आवश्यक है कि स्रोत और लक्ष्य तालिकाओं में डेटा प्रकार मेल खाते हों।
नोट:
लक्ष्य तालिका में मौजूदा रिकॉर्ड प्रभावित नहीं होते हैं.
चयन वाक्यविन्यास में सम्मिलित करें
सभी स्तंभों को एक तालिका से दूसरी तालिका में कॉपी करने के लिए:
सभी कॉलम
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
केवल कुछ कॉलम
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
प्रदर्शन डेटाबेस
इस अभ्यास में हम प्रसिद्ध नॉर्थविंड मॉडल डेटाबेस का उपयोग करेंगे।
"ग्राहक" तालिका से एक चयन
| CustomerID | CustomerName | ContactName | City | Country |
|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Berlin | Germany |
| 2 | Ana Trujillo Emparedados | Ana Trujillo | México D.F. | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | México D.F. | Mexico |
"आपूर्तिकर्ता" तालिका से एक चयन
| SupplierID | SupplierName | ContactName | City | Country |
|---|---|---|---|---|
| 1 | Exotic Liquid | Charlotte Cooper | London | UK |
| 2 | New Orleans Cajun Delights | Shelley Burke | New Orleans | USA |
| 3 | Grandma Kelly's Homestead | Regina Murphy | Ann Arbor | USA |
SQL चयनित उदाहरणों में सम्मिलित करें
"आपूर्तिकर्ता" तालिका को "ग्राहक" तालिका में कॉपी करने के लिए (डेटा से भरे नहीं गए कॉलम में NULL होगा):
उदाहरण 1
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
"आपूर्तिकर्ता" तालिका को "ग्राहक" तालिका में कॉपी करने के लिए (सभी कॉलम भरें):
उदाहरण 2
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
केवल जर्मन आपूर्तिकर्ताओं को "ग्राहक" तालिका में कॉपी करने के लिए:
उदाहरण 3
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';
महत्वपूर्ण नोट:
INSERT INTO SELECT का उपयोग करते समय, सुनिश्चित करें कि स्रोत और लक्ष्य तालिकाओं के कॉलम डेटा प्रकार मेल खाते हैं। अन्यथा त्रुटियाँ हो सकती हैं.
व्यावहारिक उदाहरण
बैकअप निर्माण
निर्दिष्ट डेटा का बैकअप
INSERT INTO CustomerBackup
SELECT * FROM Customers
WHERE Country = 'USA';
डेटा बदलना
विभिन्न तालिकाओं के बीच डेटा परिवर्तित करना
INSERT INTO ArchivedOrders
SELECT OrderID, CustomerID, OrderDate
FROM Orders
WHERE OrderDate < '2023-01-01';
फ़िल्टर किया गया डेटा
विशिष्ट स्थितियों पर आधारित डेटा
INSERT INTO PremiumCustomers
SELECT CustomerName, Email, TotalPurchases
FROM Customers
WHERE TotalPurchases > 1000;